﻿#define _CRT_SECURE_NO_WARNINGS 1
//题目描述
//一元n 次多项式可用如下的表达式表示：
//其中，ai xi称为i 次项，ai称为i 次项的系数。给出一个一元多项式各项的次数和系数，请按照如下规定的格式要求输出该多项式：
//多项式中自变量为x，从左到右按照次数递减顺序给出多项式。
//多项式中只包含系数不为0 的项。
//如果多项式n 次项系数为正，则多项式开头不出 + 号，如果多项式n 次项系数为负，则多项式以 - 号开头。
//对于不是最高次的项，以 + 号或者 - 号连接此项与前一项，分别表示此项系数为正或者系数为负。
//紧跟一个正整数，表示此项系数的绝对值（如果一个高于0 次的项，其系数的绝对值为1，则无需输出1）。
//如果x 的指数大于1，则接下来紧跟的指数部分的形式为“xb”，其中b 为x 的指数；
//如果x 的指数为1，则接下来紧跟的指数部分形式为x；如果x 的指数为0，则仅需输出系数即可。
//多项式中，多项式的开头、结尾不含多余的空格。
//
//输入格式
//输入共有2 行
//第一行1 个整数，n，表示一元多项式的次数。
//第二行有n + 1 个整数，其中第i 个整数表示第n−i + 1 次项的系数，每两个整数之间用空格隔开。
//
//输出格式
//输出共1 行，按题目所述格式输出多项式。
#include<stdio.h>
#include<math.h>
int main()
{
	int n = 0;
	int arr[101] = { 0 };
	scanf("%d", &n);
	for (int i = 0; i <= n; i++)
		scanf("%d", &arr[i]);
	int i = 0;
	while (arr[i] == 0)
		i++;
	if (i == n)
		printf("%d", arr[i]);
	else
	{
		for (int j = i; j < n; j++)
		{
			if (arr[j] == 0)
				continue;
			int flag = 0;
			if (arr[j] > 0)
				flag = 1;

			if (flag && j > i)
				printf("+");
			else if (!flag)
				printf("-");

			if (abs(arr[j]) == 1 && n - j == 1)
				printf("x");
			else if (abs(arr[j]) == 1 && n - j != 1)
				printf("x^%d", n - j);
			else if (abs(arr[j]) != 0 && n - j == 1)
				printf("%dx", abs(arr[j]));
			else
				printf("%dx^%d", abs(arr[j]), n - j);
		}
		if (arr[n] > 0)
			printf("+%d", arr[n]);
		else if (arr[n] < 0)
			printf("%d", arr[n]);
	}
	return 0;
}